package alertmanager

import (
	
)

// RoutingPolicyOption represents an option that can be used to configure a
// routing policy.
type RoutingPolicyOption func(policy *RoutingPolicy)

// RoutingPolicy represents a routing policy.
type RoutingPolicy struct {
	builder *sdk.NotificationRoutingPolicy
}

// Policy defines a routing policy that applies to the given contact point.
// All the options given on this policy will be combined using a logical "AND".
func ( string,  ...RoutingPolicyOption) RoutingPolicy {
	 := &RoutingPolicy{
		builder: &sdk.NotificationRoutingPolicy{
			Receiver:       ,
			ObjectMatchers: nil,
		},
	}

	for ,  := range  {
		()
	}

	return *
}

// TagEq defines an equality ("=") constraint between the given tag and value.
func ( string,  string) RoutingPolicyOption {
	return func( *RoutingPolicy) {
		.builder.ObjectMatchers = append(.builder.ObjectMatchers, sdk.AlertObjectMatcher{
			, "=", ,
		})
	}
}

// TagNeq defines a non-equality ("!=") constraint between the given tag and value.
func ( string,  string) RoutingPolicyOption {
	return func( *RoutingPolicy) {
		.builder.ObjectMatchers = append(.builder.ObjectMatchers, sdk.AlertObjectMatcher{
			, "!=", ,
		})
	}
}

// TagMatches defines a similarity ("=~") constraint between the given tag and regex.
func ( string,  string) RoutingPolicyOption {
	return func( *RoutingPolicy) {
		.builder.ObjectMatchers = append(.builder.ObjectMatchers, sdk.AlertObjectMatcher{
			, "=~", ,
		})
	}
}

// TagNotMatches defines a non-similarity ("!~") constraint between the given tag and regex.
func ( string,  string) RoutingPolicyOption {
	return func( *RoutingPolicy) {
		.builder.ObjectMatchers = append(.builder.ObjectMatchers, sdk.AlertObjectMatcher{
			, "!~", ,
		})
	}
}